#ifndef INFINITY_CONTAINER_H
#	define INFINITY_CONTAINER_H

#include "object.h"

namespace infinity {

class Container
{

public : //! @name Constants
	//! @{
	static const dw::uint32 SlotCapacity = 64;
	//! @}

public : //! @name Struct
	//! @{
	struct Slot
	{
		Object object;
		int count /*: 6*/;
	};

	//! @}


public :
	Container();
	virtual ~Container();

	Container(unsigned int nbSlot);

public ://! @name Commands
	//! @{

		bool add(Object& object, int count);
		bool remove(unsigned int index, int count);
		void dropOne(unsigned int index);
		void dropAll(unsigned int index);

		unsigned int getNbSlot();
		Container::Slot& getSlot(unsigned int index);
		

	//! @}



private :

	Slot * m_slots;
	unsigned int m_nbSlots;

};

} // namespace infinity

#include "container.inl"

#endif // !INFINITY_CONTAINER_H
